#include "LinkTree.h"
#include <stdio.h>
#include <string.h>
#include <dirent.h>
#define true 1
#define false 0
int IsEqual(char *str1,char *str2)
{
    if(strcmp(str1,str2)==0)
    {
        return true;
    }
    else
    {
        return false;
    }
}
void ExploreDirectory(const char* path,TNode *node)
{
    DIR *dir=opendir(path);
    if(dir==NULL)
        return;
    struct dirent *entry;
    while((entry=readdir(dir))!=NULL)
    {
        if(strcmp(entry->d_name,".")==0||strcmp(entry->d_name,"..")==0)
            continue;
        TNode *filenode=CreateTreeNode(entry->d_name);
        ConnectBranch(node,filenode);
        if(entry->d_type==4)
        {
            char fullpath[100]={0};
            strcpy(fullpath,path);
            strcat(fullpath,"/");
            strcat(fullpath,entry->d_name);
            ExploreDirectory(fullpath,filenode);
        }
    }
    closedir(dir);
}
void main(int argc,char *argv[])
{
    // LTree tree;
    // InitLinkTree(&tree);
    // TNode *node1=CreateTreeNode("234class");
    // TNode *node2=CreateTreeNode("zhang");
    // TNode *node3=CreateTreeNode("wei");
    // ConnectBranch(node1,node2);
    // ConnectBranch(node1,node3);
    // TNode *node4=CreateTreeNode("nan");
    // ConnectBranch(node3,node4);
    // ConnectBranch(tree.root,node1);
    // TravelLinkTree(&tree);
    // // printf("%d\n",GetLinkTreeHeight(tree.root));
    // // printf("%d\n",GetChildCount(node3));
    // TNode *findnode=FindNode(tree.root,"wei",IsEqual);
    // findnode->data="tao";
    // TravelLinkTree(&tree);
    // LTree newtree;
    // newtree.root=CopyLinkTree(tree.root);
    // TravelLinkTree(&newtree);
    // FreeLinkTree(&tree);
    // FreeLinkTree(&newtree);
    if(argc!=2)
    {
        printf("invalid input number\n");
        return;
    }
    LTree tree;
    InitLinkTree(&tree);
    tree.root->data=argv[1];
    ExploreDirectory(argv[1],tree.root);
    TravelLinkTree(&tree);
    FreeLinkTree(&tree);
}